/*************************************************************************
	> File Name: inter.h
	> Author: ma6174
	> Mail: ma6174@163.com 
	> Created Time: 2021年12月12日 星期日 13时36分03秒
 ************************************************************************/

#include<iostream>
#include <string>

class Context
{
public:
	Context() = default;
	Context(std::string ip, std::string op) : input(ip), output(op) {}

	void setInput(std::string ip)
	{
		input = ip;
	}

	std::string getInput()
	{
		return input;
	}

	void setOutput(std::string op)
	{
		output = op;
	}

	std::string getOutput()
	{
		return output;
	}

private:
	std::string input;
	std::string output;
};

struct Expression
{
	virtual void interpret(Context context) = 0;
};

struct TerminalExpression : public Expression
{
	virtual void interpret(Context context)
	{
		std::cout << "终端解释器" << std::endl;
	}
};

struct NonterminalExpression : public Expression
{
	virtual void interpret(Context context)
	{
		std::cout << "非终端解释器" << std::endl;
	}
};
